﻿using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;

namespace ApiManage.Models.zyhModels
{
    public partial class zyhContext : DbContext
    {
        public zyhContext()
        {
        }

        public zyhContext(DbContextOptions<zyhContext> options)
            : base(options)
        {

        }

        public virtual DbSet<SysMenu> SysMenu { get; set; }
        public virtual DbSet<SysMenuButton> SysMenuButton { get; set; }
        public virtual DbSet<SysMenuColumn> SysMenuColumn { get; set; }
        public virtual DbSet<SysMessage> SysMessage { get; set; }
        public virtual DbSet<SysMessageRead> SysMessageRead { get; set; }
        public virtual DbSet<SysParameter> SysParameter { get; set; }
        public virtual DbSet<SysRole> SysRole { get; set; }
        public virtual DbSet<SysUser> SysUser { get; set; }
        public virtual DbSet<WorkProductType> WorkProductType { get; set; }
        public virtual DbSet<WorkInterface> WorkInterface { get; set; }
        public virtual DbSet<WorkModule> WorkModule { get; set; }
        public virtual DbSet<WorkProject> WorkProject { get; set; }


        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                //实体生成命令 Scaffold-DbContext “Server=123.56.16.144;database=zyh;uid=sa;pwd=Ny180801;integrated security=false;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir TestModels

                //optionsBuilder.UseSqlServer("Server=123.56.16.144;database=zyh;uid=sa;pwd=Ny180801;integrated security=false;");

                optionsBuilder.UseSqlServer("Server=123.56.16.144;database=zyhtest;uid=sa;pwd=Ny180801;integrated security=false;");
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<SysMenu>(entity =>
            {
                entity.HasKey(e => e.MenuId);

                entity.ToTable("SysMenu");

                entity.Property(e => e.MenuId).HasColumnName("MenuID");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.MenuButton)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.MenuName)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.MenuUrl)
                    .HasMaxLength(254)
                    .IsUnicode(false);
            });

            modelBuilder.Entity<SysMenuButton>(entity =>
            {
                entity.HasKey(e => e.MenuButtonId);

                entity.ToTable("SysMenuButton");

                entity.Property(e => e.ActionUrl)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.EnCode)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.FullName)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.Icon)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.MenuId).HasColumnName("MenuID");

                entity.Property(e => e.ParentId)
                    .HasMaxLength(254)
                    .IsUnicode(false);
            });

            modelBuilder.Entity<SysMenuColumn>(entity =>
            {
                entity.HasKey(e => e.ColumnId);

                entity.ToTable("SysMenuColumn");

                entity.Property(e => e.ColumnId).HasColumnName("ColumnID");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.EnCode)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.FullName)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.MenuId).HasColumnName("MenuID");

                entity.Property(e => e.Remark)
                    .HasMaxLength(254)
                    .IsUnicode(false);
            });

            modelBuilder.Entity<SysMessage>(entity =>
            {
                entity.ToTable("SysMessage");

                entity.Property(e => e.Content).HasColumnType("text");

                entity.Property(e => e.Createtime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.Mark).HasDefaultValueSql("((1))");

                entity.Property(e => e.Recipient).IsUnicode(false);

                entity.Property(e => e.Title)
                    .IsRequired()
                    .HasMaxLength(255)
                    .IsUnicode(false);

                entity.Property(e => e.Type).HasDefaultValueSql("((1))");
            });

            modelBuilder.Entity<SysMessageRead>(entity =>
            {
                entity.ToTable("SysMessageRead");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");
            });

            modelBuilder.Entity<SysParameter>(entity =>
            {
                entity.HasKey(e => e.ParameterId);

                entity.ToTable("SysParameter");

                entity.Property(e => e.ParameterId)
                    .HasColumnName("ParameterID")
                    .HasMaxLength(64)
                    .IsUnicode(false)
                    .ValueGeneratedNever();

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.Mark).HasDefaultValueSql("((1))");

                entity.Property(e => e.ParameterName)
                    .HasMaxLength(128)
                    .IsUnicode(false);

                entity.Property(e => e.ParameterValue).HasColumnType("decimal(18, 6)");
            });

            modelBuilder.Entity<SysRole>(entity =>
            {
                entity.HasKey(e => e.RoleId);

                entity.ToTable("SysRole");

                entity.Property(e => e.RoleId).HasColumnName("RoleID");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.RoleButton).IsUnicode(false);

                entity.Property(e => e.RoleColumn).IsUnicode(false);

                entity.Property(e => e.RoleMenu).IsUnicode(false);

                entity.Property(e => e.RoleName)
                    .HasMaxLength(64)
                    .IsUnicode(false);
            });

            modelBuilder.Entity<SysUser>(entity =>
            {
                entity.HasKey(e => e.UserId);

                entity.ToTable("SysUser");

                entity.Property(e => e.UserId).HasColumnName("UserID");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.HeadImg)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.LoginName)
                    .IsRequired()
                    .HasMaxLength(64)
                    .IsUnicode(false);

                entity.Property(e => e.LoginPwd)
                    .HasMaxLength(64)
                    .IsUnicode(false);

                entity.Property(e => e.Remark)
                    .HasMaxLength(254)
                    .IsUnicode(false);

                entity.Property(e => e.RoleId).HasColumnName("RoleID");

                entity.Property(e => e.UserName)
                    .HasMaxLength(64)
                    .IsUnicode(false);
            });

            modelBuilder.Entity<WorkProductType>(entity =>
            {
                entity.ToTable("WorkProductType");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.Icon)
                    .HasMaxLength(255)
                    .IsUnicode(false);

                entity.Property(e => e.Name)
                    .HasMaxLength(50)
                    .IsUnicode(false);

                entity.Property(e => e.ParentId).HasDefaultValueSql("((0))");
            });

            modelBuilder.Entity<WorkInterface>(entity =>
            {
                entity.ToTable("WorkInterface");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.Description).HasColumnType("text");

                entity.Property(e => e.Method)
                    .HasMaxLength(50)
                    .IsUnicode(false);

                entity.Property(e => e.Name)
                    .HasMaxLength(50)
                    .IsUnicode(false);

                entity.Property(e => e.RequestContentType)
                    .HasMaxLength(50)
                    .IsUnicode(false);

                entity.Property(e => e.ResponseErrExam).IsUnicode(false);

                entity.Property(e => e.RequestParam).IsUnicode(false);

                entity.Property(e => e.RequestParamDesc).IsUnicode(false);

                entity.Property(e => e.ResponseSuccExam).IsUnicode(false);

                entity.Property(e => e.ResponseContentType)
                    .HasMaxLength(50)
                    .IsUnicode(false);

                entity.Property(e => e.RequestHeader).IsUnicode(false);

                entity.Property(e => e.RequestOther).IsUnicode(false);

                entity.Property(e => e.ResponseParam).IsUnicode(false);

                entity.Property(e => e.ResponseParamDesc).IsUnicode(false);

                entity.Property(e => e.Url)
                    .HasMaxLength(500)
                    .IsUnicode(false);

                entity.Property(e => e.Version)
                    .HasMaxLength(50)
                    .IsUnicode(false);
            });

            modelBuilder.Entity<WorkModule>(entity =>
            {
                entity.ToTable("WorkModule");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.Description)
                    .HasMaxLength(200)
                    .IsUnicode(false);

                entity.Property(e => e.Name)
                    .HasMaxLength(50)
                    .IsUnicode(false);
            });

            modelBuilder.Entity<WorkProject>(entity =>
            {
                entity.ToTable("WorkProject");

                entity.Property(e => e.CreateTime)
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.Description).HasColumnType("text");

                entity.Property(e => e.Name)
                    .HasMaxLength(50)
                    .IsUnicode(false);
            });
        }
    }
}
